﻿using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using NMT_WEB.Code;
using NMT_BLL;

namespace NMT_WEB.Frm
{
    /// <remarks>
    /// Autor:  César Murcia
    /// email:  cmurcia@gmail.com
    /// </remarks>
    /// <remarks>
    /// Fecha:  18-11-2011
    /// </remarks>
    /// <summary>
    /// Descripción:    Formulario para administrar familias.
    /// </summary>
    public partial class Administracion : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            // Validar permisos
            if (SessionControl.Status == false)
            {
                Response.Redirect("../Frm/Index.aspx");
            }

            if (!IsPostBack)
            {
                this.ImBPlay.Attributes.Add("onMouseDown", "ButtonMouseDown(this);");
                this.ImBPlay.Attributes.Add("onMouseUp", "ButtonMouseUp(this);");

                this.CargarListas();
            }

            this.LblMensaje.Text = string.Empty;
            this.LblMensaje.CssClass = "error";
        }

        //--------------------------------------------
        #region Cargar listas

        /// <summary>
        /// Evento para cargar las familias en las listas.
        /// </summary>
        private void CargarListas()
        {
            try
            {
                Familias fm = new Familias();
                this.LsBCatalogoFamilias.DataTextField = "NOMBRE";
                this.LsBCatalogoFamilias.DataValueField = "ID";

                this.LsBFamilias.DataTextField = "NOMBRE";
                this.LsBFamilias.DataValueField = "IDCATALOGO";

                this.LsBCatalogoFamilias.DataSource = fm.CatalogoFamilias;
                this.LsBCatalogoFamilias.DataBind();
                this.LsBFamilias.DataSource = fm.SelectFamilias;
                this.LsBFamilias.DataBind();
                this.LblTotal.Text = Convert.ToString(fm.NumFamilias);
                fm = null;
            }
            catch (Exception ex)
            {
                Console.Write(ex);
            }
        }

        #endregion
        //--------------------------------------------


        //--------------------------------------------
        #region Botones

        /// <summary>
        /// Evento para pasar catalogos de familias.
        /// </summary>
        protected void ImBPlay_Click(object sender, ImageClickEventArgs e)
        {
            int numFamilias;

            try
            {
                numFamilias = Convert.ToInt32(ConfigurationManager.AppSettings["NumeroFamilias"]);

                if (this.LsBCatalogoFamilias.SelectedIndex != -1)
                {
                    if (this.LsBFamilias.Items.Count < numFamilias)
                    {
                        // Insertar en familias
                        this.LsBFamilias.Items.Add(this.LsBCatalogoFamilias.SelectedItem);
                        // Borrar de catalogos
                        this.LsBCatalogoFamilias.Items.Remove(this.LsBCatalogoFamilias.SelectedItem);
                        this.LsBCatalogoFamilias.SelectedIndex = -1;
                        this.LsBFamilias.SelectedIndex = -1;

                        // Contar elementos
                        this.LblTotal.Text = this.LsBFamilias.Items.Count.ToString();

                        if (this.LsBFamilias.Items.Count == numFamilias)
                        {
                            this.LblMensaje.Text = "Selección de Familias Completadas";
                            this.LblMensaje.CssClass = "ok";
                        }
                    }
                    else
                    {
                        this.LblMensaje.Text = "Selección de Familias Completadas";
                        this.LblMensaje.CssClass = "ok";
                    }
                }
                else
                {
                    this.LblMensaje.Text = "No ha Seleccionado Ninguna Familia";
                }
            }
            catch (Exception ex)
            {
                Console.Write(ex);
            }
        }

        /// <summary>
        /// Evento para pasar familias a la lista catalogos.
        /// </summary>
        protected void ImBBack_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                if (this.LsBFamilias.SelectedIndex != -1)
                {

                    // Insertar en catalogos
                    this.LsBCatalogoFamilias.Items.Add(this.LsBFamilias.SelectedItem);
                    // Borrar de familias
                    this.LsBFamilias.Items.Remove(this.LsBFamilias.SelectedItem);
                    this.LsBCatalogoFamilias.SelectedIndex = -1;
                    this.LsBFamilias.SelectedIndex = -1;

                    // Contar elementos
                    this.LblTotal.Text = this.LsBFamilias.Items.Count.ToString();
                }
                else
                {
                    this.LblMensaje.Text = "No ha Seleccionado Ninguna Familia";
                }
            }
            catch (Exception ex)
            {
                Console.Write(ex);
            }
        }

        /// <summary>
        /// Evento del boton btnSave.
        /// </summary>
        protected void BtnSave_Click(object sender, EventArgs e)
        {
            int index;
            int numFamilias;
            int[] ids;

            try
            {
                numFamilias = Convert.ToInt32(ConfigurationManager.AppSettings["NumeroFamilias"]);

                if (this.LsBFamilias.Items.Count <= numFamilias)
                {
                    ids = new int[this.LsBFamilias.Items.Count];
                    index = 0;

                    foreach (ListItem item in LsBFamilias.Items)
                    {
                        ids[index] = Convert.ToInt32(item.Value);
                        index++;
                    }

                    Familias fm = new Familias();
                    fm.SaveFamilias(ids);
                    fm = null;

                    this.LblMensaje.Text = "Familias Guardadas Exitosamente";
                    this.LblMensaje.CssClass = "ok";
                }
                else
                {
                    this.LblMensaje.Text = "Se deben seleccionar hasta un máximo de " + numFamilias + " familias";
                }

                ids = null;

                this.CargarListas();

            }
            catch (Exception ex)
            {
                Console.Write(ex);
            }
        }

        #endregion
        //--------------------------------------------

    }
}